package model;

/**
 * This is an abstract class that dictates the construction and behavior of an
 * arena action. An arena action can be either combat or movement. It holds the
 * information for the territories and players involved in the action and the
 * number of troops in each territory.
 * 
 * @author David Shefchik, Xiaotian Chang
 */
@SuppressWarnings("serial")
public abstract class ArmyAction extends ArenaAction {

	protected Territory originTerritory;
	protected Territory targetTerritory;

	/**
	 * The constructor takes in two territories and assigns the origin and
	 * target territories, along with the number of troops in each territory.
	 * 
	 * @param origin
	 *            The territory the action is originating from.
	 * @param target
	 *            The territory the action is being performed on.
	 */
	// TODO Why does an abstract class have a constructor?
	public ArmyAction(Territory origin, Territory target) {
		originTerritory = origin;
		targetTerritory = target;
	}
	
	/**
	 * @return the Territory where the movement start.
	 */
	public Territory getOriginTerritory() {
		return this.originTerritory;
	}

	/**
	 * @return the Territory where 
	 */
	public Territory getTargetTerritory() {
		return this.targetTerritory;
	}
}
